package com.ruijiang.controller.vm_service;

import com.ruijiang.controller.ApiPrefix;
import com.ruijiang.dto.insert.NodeInsertDto;
import com.ruijiang.dto.page.RegionPageDto;
import com.ruijiang.result.PageResult;
import com.ruijiang.service.VmService.NodeService;
import com.ruijiang.vo.node.NodeEntryVO;
import com.ruijiang.vo.vm.VMInfoVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
@RequestMapping(ApiPrefix.VM_SERVICE+"/node")
@Slf4j
public class NodeController {

    @Autowired
    NodeService nodeService;


    /**
     * 获取点位列表
     * @return
     */
    @GetMapping("/search")
    public PageResult getNodeList(RegionPageDto regionPageDto){
        log.info("获取点位列表:{}",regionPageDto);
        PageResult pageResult = nodeService.getNodeList(regionPageDto);
        return pageResult;
    }


    /**
     * 新增点位
     * @return
     */
    @PostMapping
    public Boolean insertNode(@RequestBody NodeInsertDto dto){
        log.info("新增点位：{}",dto);
        nodeService.insertNode(dto);
        return true;
    }

    /**
     * 修改点位
     * @param id
     * @param dto
     * @return
     */
    @PutMapping("/{id}")
    public Boolean updateNode(@PathVariable String id,@RequestBody NodeInsertDto dto){
        log.info("修改点位：{}=={}",id,dto);
        nodeService.updateNodeById(id,dto);
        return true;
    }

    /**
     * 删除点位
     * @return
     */
    @DeleteMapping("/{id}")
    public Boolean deleteNode(@PathVariable String id){
        log.info("删除点位：{}",id);
        nodeService.deleteNodeById(id);
        return true;
    }


    /**
     * 获取点位详情
     * @param id
     * @return
     */
    @GetMapping("/vmList/{id}")
    public List<VMInfoVO> getVmListByNodeId(@PathVariable String id){
        log.info("获取点位下的售货机列表 {}",id);
        return nodeService.getVmListByNodeId(id);
    }


    /**
     * 合作商点位汇总统计
     * @return
     */
    @GetMapping("/nodeCollect")
    public List<NodeEntryVO> getNodeCollect(){
        return nodeService.getNodeCollect();
    }

    /**
     * 获取点位总数
     * @return
     */
    @GetMapping("/count")
    public Integer getNodeCount(){
        return nodeService.getNodeCount();
    }

}
